/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jsf;

import br.data.crud.CrudClientes;
import br.data.crud.CrudFornecedores;
import br.data.model.Cidades;
import br.data.model.Clientes;
import br.data.model.Estados;
import br.data.model.Fornecedores;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.ws.rs.GET;

/**
 *
 * @author WStrafacce
 */
@ManagedBean
@SessionScoped
public class RFacesFornecedor {
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */

    private Integer codigoforn;
    private Date datacadastro;
    private String razaosocial;
    private String fantasia;
    private String cnpj;
    private String inscestadual;
    private String telefone;
    private String rua;
    private String complemento;
    private String bairro;
    private String logradouro;
    private String cep;
    private Integer numero;
    private String login;
    private String senha;
    private String responsavel;
    private String cpf;
    private String codigoest;
    private String codigocid;
    private Fornecedores fornecedor;
    private ArrayList<Fornecedores> listaFornecedores;

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getCodigocid() {
        return codigocid;
    }

    public void setCodigocid(String codigocid) {
        this.codigocid = codigocid;
    }

    public Integer getCodigoforn() {
        return codigoforn;
    }

    public void setCodigoforn(Integer codigoforn) {
        this.codigoforn = codigoforn;
    }

    public String getCodigoest() {
        return codigoest;
    }

    public void setCodigoest(String codigoest) {
        this.codigoest = codigoest;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Date getDatacadastro() {
        return datacadastro;
    }

    public void setDatacadastro(Date datacadastro) {
        this.datacadastro = datacadastro;
    }

    public String getFantasia() {
        return fantasia;
    }

    public void setFantasia(String fantasia) {
        this.fantasia = fantasia;
    }

    public String getInscestadual() {
        return inscestadual;
    }

    public void setInscestadual(String inscestadual) {
        this.inscestadual = inscestadual;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getRazaosocial() {
        return razaosocial;
    }

    public void setRazaosocial(String razaosocial) {
        this.razaosocial = razaosocial;
    }

    public String getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(String responsavel) {
        this.responsavel = responsavel;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public Fornecedores getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Fornecedores fornecedor) {
        this.fornecedor = fornecedor;
    }

    public ArrayList<Fornecedores> getListaFornecedores() {
        return listaFornecedores;
    }

    public void setListaFornecedores(ArrayList<Fornecedores> listaFornecedores) {
        this.listaFornecedores = listaFornecedores;
    }

    public RFacesFornecedor() {
        listaFornecedores = new ArrayList<Fornecedores>(new CrudFornecedores().getAll());
    }

    public Collection<Fornecedores> getAll() {
        return new CrudFornecedores().getAll();
    }

    public Object getObject() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        return beanUsers.getObject();
    }

    public String fornecedorAlterarCadastro() {
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

            this.codigoforn = beanUsers.getForn().getCodigoforn();

            carregarPaginaAlteracao();

            return "fornecedor_alterar_cadastro.xhtml";
        } catch (Exception e) {
            return "errorPage.xhtml";
        }
    }

    public String adminAlterarCadastro() {
        try {
            java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

            int codForn = Integer.parseInt(params.get("codForn"));

            this.codigoforn = codForn;

            carregarPaginaAlteracao();

            return "administrador_alterar_fornecedor.xhtml";
        } catch (Exception e) {
            return "errorPage.xhtml";
        }
    }

    public String save(ActionEvent actionEvent) {
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            Fornecedores forn;
            alterarFornecedor();
            if (this.getObject() instanceof Fornecedores) {
                new br.data.crud.CrudFornecedores().update(fornecedor);
                context.addMessage(null, new FacesMessage("Cadastro alterado com sucesso", null));
                return "fornecedor_index.xhtml";
            } else {
                new br.data.crud.CrudFornecedores().update(fornecedor);
                context.addMessage(null, new FacesMessage("Cadastro alterado com sucesso", null));
                return "administrador_manter_fornecedores.xhtml";
            }

        } catch (Exception e) {
            context.addMessage(null, new FacesMessage("Falhas na atualização", null));
            return null;
        }
    }

    public void alterarFornecedor() {
        fornecedor.setBairro(bairro);
        fornecedor.setCep(cep);
        fornecedor.setCnpj(cnpj);
        fornecedor.setCodigocid(new Cidades(Integer.parseInt(codigocid)));
        fornecedor.setCodigoest(new Estados(Integer.parseInt(codigoest)));
        fornecedor.setComplemento(complemento);
        fornecedor.setCpf(cpf);
        fornecedor.setFantasia(fantasia);
        fornecedor.setInscestadual(inscestadual);
        fornecedor.setLogin(login);
        fornecedor.setLogradouro(logradouro);
        fornecedor.setNumero(numero);
        fornecedor.setRazaosocial(razaosocial);
        fornecedor.setResponsavel(responsavel);
        fornecedor.setRua(rua);
        fornecedor.setSenha(senha);
        fornecedor.setTelefone(telefone);
    }

    public void carregarPaginaAlteracao() {
        try {

            fornecedor = new CrudFornecedores().getFornecedor(codigoforn);

            this.bairro = fornecedor.getBairro();
            this.cep = fornecedor.getCep();
            this.cnpj = fornecedor.getCnpj();
            this.codigocid = String.valueOf(fornecedor.getCodigocid().getCodigocid());
            this.codigoest = String.valueOf(fornecedor.getCodigoest().getCodigoest());
            this.complemento = fornecedor.getComplemento();
            this.cpf = fornecedor.getCpf();
            this.datacadastro = fornecedor.getDatacadastro();
            this.fantasia = fornecedor.getFantasia();
            this.inscestadual = fornecedor.getInscestadual();
            this.login = fornecedor.getLogin();
            this.numero = fornecedor.getNumero();
            this.razaosocial = fornecedor.getRazaosocial();
            this.responsavel = fornecedor.getResponsavel();
            this.rua = fornecedor.getRua();
            this.senha = fornecedor.getSenha();
            this.telefone = fornecedor.getTelefone();

        } catch (Exception e) {
        }

    }

    public String remover() {
        java.util.Map<String, String> param = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().
                getRequestParameterMap();
        this.codigoforn = Integer.parseInt(param.get("codigo"));

        new CrudFornecedores().remove(codigoforn);

        return "administrador_manter_fornecedores.xhtml";
    }
}
